package com.java.reflect;

import java.lang.reflect.Constructor;

public class Reflect03_User {
    public static void main(String[] args) throws Exception {
        Class userClass = User.class ;
        // 读取公共构造方法
        Constructor[] userConArr = userClass.getConstructors();
        printCon(userConArr);
        // 读取指定私有构造方法
        Constructor privateCon = userClass.getDeclaredConstructor(Integer.class);
        System.out.println(privateCon);
        // 读取全部构造方法
        userConArr = userClass.getDeclaredConstructors();
        printCon(userConArr);
        // 调用公共构造方法创建对象
        Constructor pubCon = userClass.getConstructor(Integer.class,String.class);
        Object pubUser = pubCon.newInstance(1,"hello") ;
        // 调用私有构造方法创建对象
        Constructor priCon = userClass.getDeclaredConstructor(Integer.class);
        // 忽略private权限修饰符
        priCon.setAccessible(Boolean.TRUE);
        Object priUser = priCon.newInstance(2) ;
        System.out.println(pubUser+"\n"+priUser);
    }
    public static void printCon (Constructor[] constructors){
        for (Constructor constructor:constructors){
            System.out.println(constructor);
        }
        System.out.println("=======================");
    }

}
